# 导入VectorStoreIndex和Document类，用于向量存储和文档处理
from llama_index.core import VectorStoreIndex, Document

# 定义一个包含示例文本的列表
sample_texts = [
    "查询缓存可以显著提高重复查询的响应速度。",
    "缓存机制可以避免重复的检索和生成过程。",
    "SimpleCache提供了基本的缓存功能。",
]

# 将每个示例文本包装成Document对象，生成文档列表
documents = [Document(text=text) for text in sample_texts]

# 通过文档列表创建向量索引
index = VectorStoreIndex.from_documents(documents)

# 创建一个简单的内存缓存（字典类型）
cache = {}

# 创建一个查询引擎
query_engine = index.as_query_engine()

# 第一次执行查询（此时会进行实际计算）
print("第一次查询（会计算）:")
response1 = query_engine.query("什么是查询缓存？")
print(f"结果: {response1}")

# 将第一次查询的结果存入缓存
cache["什么是查询缓存？"] = response1
print(f"缓存大小: {len(cache)}")

# 第二次执行相同的查询（此时会命中缓存）
print("\n第二次查询（使用缓存）:")
if "什么是查询缓存？" in cache:
    # 如果缓存中有结果，则直接从缓存获取
    response2 = cache["什么是查询缓存？"]
    print("从缓存中获取结果")
else:
    # 如果缓存中没有，则重新计算
    response2 = query_engine.query("什么是查询缓存？")
    print("重新计算")
print(f"结果: {response2}")

# 判断两次查询结果是否一致，验证缓存是否生效
print(f"\n缓存命中: {response1 == response2}")
print(f"缓存内容: {list(cache.keys())}")